//mediator pattern 中介者模式，用一个中介对象来封装一些对象相互之间的交互
//中介者不需要对象显示的调用，而是使其耦合松散，而且可以独立改变他们的交互
#ifndef __MEDIATOR_H__
#define __MEDIATOR_H__
#include <iostream>
#include <memory>
class Nation;
//中介者虚类，中介者用于让两个没有关系的类相互调用
class UN
{
public:
    using ptr=std::shared_ptr<UN>;
    virtual void declare(const std::string& msg, Nation* nation)=0;
protected:
    
};
class UNSecurity:public UN
{
public:
    using ptr=std::shared_ptr<UNSecurity>;
    UNSecurity()=default;
    UNSecurity(Nation* one, Nation* two):
    m_nationOne(one),m_nationTwo(two){}
    virtual void declare(const std::string& msg, Nation* nation) override;
    void setNation(Nation* nationOne, Nation* nationTwo)
    {
        m_nationOne=nationOne;
        m_nationTwo=nationTwo;
    }
private:
    Nation* m_nationOne;
    Nation* m_nationTwo;
};

#endif